package com.xidian.zhiancloud.controller.equipFacility.baseSetting;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xidian.zhiancloud.controller.base.BaseController;
import com.xidian.zhiancloud.dto.ResultDTO;
import com.xidian.zhiancloud.enums.GeneralResponseEnums;
import com.xidian.zhiancloud.model.PreUnitType;
import com.xidian.zhiancloud.qo.equipFacility.PreUnitTypeQO;
import com.xidian.zhiancloud.service.equipFacility.PreUnitTypeService;
import com.xidian.zhiancloud.vo.equipFacility.PreUnitTypeVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;
import java.util.Date;

/**
 * 设备设施 基础设置 备品备件类型设置接口
 *
 * @Author: 任启亮
 * @Date: 2020/11/12
 */
@RestController
@RequestMapping("/PreUnitType")
public class PreUnitTypeController extends BaseController {
    @Autowired
    private PreUnitTypeService preUnitTypeService;

    /**
     * 增加备品备件类型设置
     *
     * @param preUnitType 备品备件类型设置对象
     * @return 是否添加成功
     */
    @PostMapping("/add")
    public ResultDTO<Boolean> add(PreUnitType preUnitType) {
        preUnitType.setCompanyId(getSessionUserCompanyId());
        preUnitType.setCreatorId(getSessionUserid());
        preUnitType.setAddTime(new Date(System.currentTimeMillis()));
        Boolean result = preUnitTypeService.save(preUnitType);
        return ResultDTO.successOf(result, GeneralResponseEnums.SUCCESS);
    }

    /**
     * 获取备品备件类型设置
     *
     * @param id 备品备件类型设置对象id
     * @return 备品备件类型设置对象
     */
    @GetMapping("/getById")
    public ResultDTO<PreUnitType> getById(@RequestParam("id") Long id) {
        return ResultDTO.successOf(preUnitTypeService.getById(id), GeneralResponseEnums.SUCCESS);
    }

    /**
     * 根据id删除备品备件类型设置
     *
     * @param ids ids数组
     * @return 是否删除标志
     */
    @PostMapping("/deleteByIds")
    public ResultDTO<Boolean> deleteByIds(Long[] ids) {
        Boolean result = preUnitTypeService.removeByIds(Arrays.asList(ids));
        return ResultDTO.successOf(result, GeneralResponseEnums.SUCCESS);
    }

    /**
     * 根据id修改备品备件类型设置
     *
     * @param preUnitType 备品备件类型设置对象
     * @return 是否修改状态
     */
    @PostMapping("/patchById")
    public ResultDTO<Boolean> patchById(PreUnitType preUnitType) {
        preUnitType.setCompanyId(null);
        preUnitType.setCreatorId(null);
        preUnitType.setAddTime(null);
        Boolean result = preUnitTypeService.updateById(preUnitType);
        return ResultDTO.successOf(result, GeneralResponseEnums.SUCCESS);
    }

    /**
     * @param preUnitTypeQO 传递参数
     * @return 备品备件类型设置分页查询
     */
    @GetMapping("/getListByQO")
    public ResultDTO<IPage<PreUnitTypeVO>> getList(PreUnitTypeQO preUnitTypeQO) {
        if (preUnitTypeQO.getCurrent()== null || preUnitTypeQO.getSize() == null) {
            return ResultDTO.errorOf(GeneralResponseEnums.REQUEST_ERROR);
        }
        preUnitTypeQO.setCompanyId(getSessionUserCompanyId());
        return ResultDTO.successOf(preUnitTypeService.selectByQO(preUnitTypeQO), GeneralResponseEnums.SUCCESS);
    }
}
